<!--
  功能：功能描述
  作者：mjt
  邮箱：hello world
  时间：2020年12月17日 17:35:44
  版本：v1.0
  修改记录：
  修改内容：
  修改人员：
  修改时间：
-->
<template>
  <div class="create">
    <div class="header">
      <el-page-header
        title="返回"
        @back="goback"
        content="用户信息"
      ></el-page-header>
      <!-- {{form}} -->
    </div>
    <div class="bg">
      <el-form
        :model="form"
        label-width="100px"
        size="medium"
        :rules="rules"
        ref="form"
      >
        <el-form-item
          label="用户名"
          hide-required-asterisk="true"
          prop="username"
        >
          <el-input v-model="form.username"></el-input>
        </el-form-item>
        <el-form-item label="密码" prop="password">
          <el-input v-model="form.password" show-password></el-input>
        </el-form-item>
        <el-form-item label="姓名" prop="realname">
          <el-input v-model="form.realname"></el-input>
        </el-form-item>
        <!-- <el-form-item label="角色" prop="rolename">
       <el-select
         
          v-model="form.rolename"
          placeholder="请选择角色"
          size="small"
          
        >
          <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
        </el-select>
        </el-form-item> -->

        <el-form-item label="性别" prop="gender">
          <el-radio-group v-model="form.gender">
            <el-radio label="男">男</el-radio>
            <el-radio label="女">女</el-radio>
          </el-radio-group>
        </el-form-item>
<el-form-item label="email" prop="email">
          <el-input v-model="form.email"></el-input>
        </el-form-item>

        <el-form-item label="状态" prop="status">
          <el-radio-group v-model="form.status">
            <el-radio label="正常">正常</el-radio>
            <el-radio label="禁用">禁用</el-radio>
          </el-radio-group>
        </el-form-item>

        <el-form-item label="手机号" prop="telephone">
          <el-input v-model.number="form.telephone"></el-input>
        </el-form-item>

<el-form-item label="现居住地址" prop="address">
          <el-input v-model="form.address"></el-input>
        </el-form-item>

        <el-form-item label="出生日期" prop="birth">
          <el-date-picker
      v-model="form.birth"
      type="date"
      placeholder="选择日期">
    </el-date-picker>
        </el-form-item>


       
        <el-form-item label="个人简介" prop="introduce">
          <el-input v-model="form.introduce" type="textarea"
            rows="5"
            maxlength="500"
            show-word-limit></el-input>
        </el-form-item>

        
      </el-form>
    </div>

    <div slot="footer" style="text-align: center" class="tj">
      <el-button type="primary" @click="submitForm('form')" size="mini"
        >提 交</el-button
      >
    </div>
  </div>
</template>

<script>
import { post } from "@/utils/request";
export default {
  // 组件名称
  name: "demo",

  // 组件参数 接收来自父组件的数据
  props: {},
  // 组件状态值
  data() {
    return {
      options: [
        {
          value: "超级管理员1",
          label: "超级管理员1",
        },{
          value: "超级管理员2",
          label: "超级管理员2",
        },
        {
          value: "技术专家1",
          label: "技术专家1",
        },
        {
          value: "技术专家2",
          label: "技术专家2",
        },
        {
          value: "普通用户1",
          label: "普通用户1",
        },
        {
          value: "普通用户2",
          label: "普通用户2",
        },
      ],
      value: "",
      form: {},
      param:{},
      ruleForm: {
        username: "",
        password: "",
        realname: "",
        gender: "",
        telephone: "",
        address:"",
        email:"",
        status:"",
        rolename:"",
      },
      rules: {
        username: [
          { required: true, message: "请输入用户名", trigger: "blur" },
          { min: 3, max: 15, message: "长度在 3 到 15个字符", trigger: "blur" },
        ],
        password: [{ required: true, message: "请输入密码", trigger: "blur" }],
        realname: [{ required: true, message: "请输入姓名", trigger: "blur" }],
        gender: [{ required: true, message: "请选择性别", trigger: "blur" }],
        telephone: [
          { required: true, message: "请输入电话号码", trigger: "blur" },
          { type: "number", message: "请输入有效的电话号码" },
        
        ],address:[{required: true, message: "请输入地址", trigger: "blur"}],
        email:[{required: true, message: "请输入email", trigger: "blur"}],
        status:[{required: true, message: "请选择状态", trigger: "blur"}],
        rolename:[{required: true, message: "请选择角色", trigger: "blur"}],
      },
    };
  },
  // 计算属性
  computed: {},
  // 侦听器
  watch: {},
  // 组件方法
  methods: {
    

    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // 1. 获取参数  this.form
          // 2. 将参数提交给后台
          let url = "http://121.196.106.124:8888/baseUser/saveOrUpdate";
          post(url, this.form).then((resp) => {
            // 提示用户录入完成
            this.$message({ type: "success", message: resp.message });
            // 返回，展示
            this.goback();
          });

          
        } else {
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },

    goback() {
      this.$router.back();
    },
    
  },
  // 以下是生命周期钩子
  /**
   * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
   */
  created() {
    this.form = this.$route.query;
  },
  /**
   * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
   * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
   */
  mounted() {},
  /**
   * 实例销毁之前调用。在这一步，实例仍然完全可用。
   */
  beforeDestroy() {},
  /**
   * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
   * 所有的事件监听器会被移除，所有的子实例也会被销毁。
   */
  destroyed() {},
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<!--这么设计的目的是父组件可以对子组件根元素进行布局。-->
<style scoped>
.header {
  padding: 10px 0 0 40px;
}
.bg {
  padding: 10px 200px 0;
}
.tj {
  padding-bottom: 50px;
}
/* .bottom{padding-left: 100px;} */
/* .bg{background: rgb(100,217,214);} */
</style>